package com.timeshare.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.timeshare.dto.AppointmentRequest;
import com.timeshare.dto.AppointmentVO;
import com.timeshare.entity.Appointment;

/**
 * 预约服务接口
 */
public interface AppointmentService extends IService<Appointment> {
    
    /**
     * 创建预约
     */
    void createAppointment(Long userId, AppointmentRequest request);
    
    /**
     * 确认预约
     */
    void confirmAppointment(Long userId, Long appointmentId);
    
    /**
     * 拒绝预约
     */
    void rejectAppointment(Long userId, Long appointmentId);
    
    /**
     * 取消预约
     */
    void cancelAppointment(Long userId, Long appointmentId);
    
    /**
     * 开始预约
     */
    void startAppointment(Long userId, Long appointmentId);
    
    /**
     * 完成预约
     */
    void completeAppointment(Long userId, Long appointmentId);
    
    /**
     * 获取我发起的预约
     */
    Page<AppointmentVO> getMyRequests(Long userId, Integer page, Integer size);
    
    /**
     * 获取我收到的预约
     */
    Page<AppointmentVO> getMyReceived(Long userId, Integer page, Integer size);
    
    /**
     * 获取预约详情
     */
    AppointmentVO getAppointmentDetail(Long appointmentId);
}

